iptables防火墙过滤规则

您所在的位置:网站首页 admin prohibited iptables防火墙过滤规则

iptables防火墙过滤规则

2023-10-30 21:55| 来源: 网络整理| 查看: 265

iptables  包过滤 防火墙      firewall  防火墙工作在网络边缘(主机边缘)对于进出的网络数据包进行规则排查,并在匹配某规则时由规则定义的处理进行处理的功能组件

防火墙类型

    根据工作区域不同分为:         OSI 的第三层,即网络层的防火墙         OSI 的第七层,即应用层的防火墙 ,或者代理服务器/网关

网络层的防护墙:包过滤器

        在网络层 对数据进行条件是选择,根据访问控制表(ACL),即检查每个数据的源地址,目的地址,端口号,协议状态等.           针对端口

代理服务防火墙

       代理服务会把同过或者服务控制规则的数据转发给请求访问的用户,内外网的用户访问都是通过代理服务器上的链接来实现,从而起到了隔离防火墙内为计算机系统作用        针对数据

主机防火墙和网络防火墙

        主机防火墙:服务范围为当前主机;         网络防火墙: 服务范围为防火墙所在的局域网;

Iptables的组成

 四个表:    filter :过滤规则表,该表根据管理员预定义的一组规则过滤符合条件的数据包    nat : 地址转换规则表;用于修改源IP或目标IP,也可以改端口;    mangle :修改数据标记位规则表;拆解报文,作出修改,并重新封装起来;    raw:跟踪数据表规则表 ;关闭nat表上启用的连接追踪机制  五个链接:   INPUT OUTPUT FORWARD PREROUTING POSTROUTING     功能 INPUT         由本机流出:OUTPUT --> POSTROUTING         转发:PREROUTING --> FORWARD --> POSTROUTING

 添加规则的考量点

    (1) 要实现那种功能 : 判断条件在那张表上     (2) 报文流经的路径: 判断添加在那个路径上   规则:             组成部分:根据规则匹配条件来尝试匹配报文,一旦匹配成功,就由规则定义的处理动作作出处理;                 匹配条件:                     基本匹配条件                     扩展匹配条件                 处理动作:                     基本处理动作                     扩展处理动作                     自定义处理机制:

ipatables 命令

               查看:                         -L:list, 列出指定鏈上的所有规则;                         -n:numberic,以数字格式显示地址和端口号;                         -v:verbose,详细信息;                         -x:exactly,显示计数器结果的精确值;                          --line-numbers:显示规则的序号;  示例:            不指定表的话默认为filter表                   指定查看raw表              常用选项组合-vnL 显示详细属性信息              查看指定链详细信息          链管理:               -N:new, 自定义一条新的规则链;               -X: delete,删除自定义的规则链;               -P:Policy,设置默认策略;对filter表中的链而言,其默认策略有:                   ACCEPT:接受                   DROP:丢弃                   REJECT:拒绝               -E:重命名自定义链;引用计数不为0的自定义链不能够被重命名,也不能被删除; 示例:           添加一个新链                          每一个自定义链都由引用计数           删除自定义链                注意:仅能删除用户自定义的引用计数为0的空链                  修改规则策略                    重命名自定义规则连名称       

 

  规则管理:

 

                        -A:append,追加;                         -I:insert, 插入,要指明位置,省略时表示第一条;                         -D:delete,删除;                             (1) 指明规则序号;                             (2) 指明规则本身;                         -R:replace,替换指定链上的指定规则;                         -F:flush,清空指定的规则链;                         -Z:zero,置零;                             iptables的每条规则都有两个计数器:                                 (1) 匹配到的报文的个数;                                 (2) 匹配到的所有报文的大小之和;                        

匹配条件:

                    基本匹配条件:无需加载任何模块,由iptables/netfilter自行提供;                         [!] -s, --source  address[/mask][,...]:检查报文中的源IP地址是否符合此处指定的地址或范围;                               [!] -d, --destination address[/mask][,...]:检查报文中的目标IP地址是否符合此处指定的地址或范围;                         [!] -p, --protocol protocol  指定协议 所有地址:0.0.0.0/0                             protocol: tcp, udp, udplite, icmp, icmpv6,esp, ah, sctp, mh or  "all"                                 {tcp|udp|icmp}                         [!] -i, --in-interface name:数据报文流入的接口;只能应用于数据报文流入的环节,只能应用于PREROUTING,INPUT和FORWARD链;                         [!] -o, --out-interface name:数据报文流出的接口;只能应用于数据报文流出的环节,只能应用于FORWARD、OUTPUT和POSTROUTING链;         示例:                                                     扩展匹配条件: 需要加载扩展模块,方可生效;                         隐式扩展:不需要手动加载扩展模块;因为它们是对协议的扩展,所以,但凡使用-p指明了协议,就表示已经指明了要扩展的模块,无需再同时使用-m指明模块;                   tcp:                         [!] --source-port, --sport port[:port]:匹配报文的源端口;可以是端口范围;                         [!] --destination-port,--dport port[:port]:匹配报文的目标端口;可以是端口范围;                         [!] --tcp-flags  mask  comp                         例如:“--tcp-flags  SYN,ACK,FIN,RST  SYN”表示,要检查的标志位为SYN,ACK,FIN,RST四个,其中SYN必须为1,余下的必须为0;                         [!] --syn:用于匹配第一次握手,相当于”--tcp-flags  SYN,ACK,FIN,RST  SYN“;                                                   udp:                         [!] --source-port, --sport port[:port]:匹配报文的源端口;可以是端口范围;                         [!] --destination-port,--dport port[:port]:匹配报文的目标端口;可以是端口范围;                  icmp:                         [!] --icmp-type {type[/code]|typename}                              echo-request:8  发出去的请求状态码                              echo-reply:0     回应的状态码                                                   定义白名单规则 :  对本机开放ssh     修改其默认策略        如下图 表示允许基于tcp协议22端口的192.168.117.133的访问其他协议IP会被DROP 匹配                          注意此时如果使用 -F 清除规则那么 就只剩下默认规则 ,此处设置为DROP,会导致客户端断开连等各种不便       下面如图不需要修改其默认策略          控制ping 规则 这个表示 会响应任何人                       如果你本地地址有多个可以基于i o 网卡设定规则                      这个时候就可以去掉之前的REJECT 设置        允许本机ping任何人反之不能ping主机          显式扩展:必须使用-m 指明使用的扩展模块进行的扩展;调用模块         1、multiport扩展             此模块匹配一组源端口或目标端口。最多可指定15个端口。端口范围(端口:端口)算作两个端口。             它只能用于下列协议:TCP,UDP连接,udplite,DCCP和SCTP               [!] --source-ports,--sports port[,port|,port:port]...:指定多个源端口;             [!] --destination-ports,--dports port[,port|,port:port]...:指定多个目标端口;             [!] --ports port[,port|,port:port]...:指明多个端口;             示例:                   一次开放22,80,443,端口             [root@wxC7 ~]# iptables -I INPUT 1 -d 192.168.117.133 -p tcp -m multiport --dports 22,80,443 -j ACCEPT             [root@wxC7 ~]# iptables -I OUTPUT 1 -s 192.168.117.133 -p tcp -m multiport --dports 22,80,443 -j ACCEPT                                             2、iprange                     以连续地址块的方式来指明多IP地址匹配条件;                     [!] --src-range from[-to] 源地址                     [!] --dst-range from[-to] 目标地址            示例: 设定指定ip范围内的开放23端口                  [root@wxC7 ~]# iptables -I INPUT 2 -d 192.168.117.133 -p tcp --dport 23 -m iprange --src-range 192.168.117.100-192.168.117.140 -j ACCEPT                  [root@wxC7 ~]# iptables -I OUTPUT 2 -s 192.168.117.133 -p tcp --sport 23 -m iprange --dst-range 192.168.117.100-192.168.117.140 -j ACCEPT                              3、time              如果包到达时间/日期在给定范围内,则匹配。                        --timestart hh:mm[:ss]                      --timestop hh:mm[:ss]                        [!] --weekdays day[,day...]                        [!] --monthdays day[,day...]                       --datestart YYYY[-MM[-DD[Thh[:mm[:ss]]]]]                     --datestop YYYY[-MM[-DD[Thh[:mm[:ss]]]]]                        --kerneltz:使用内核配置的时区而非默认的UTC; 示例:          定制改地址范围内与规定时间内访问基于内核时间           [root@wxC7 ~]# iptables -I INPUT 3 -d 192.168.117.133 -p tcp --dport 23 -m iprange --src-range 192.168.117.130-192.168.117.135 -m time --timestart 12:00:00 --timestop 15:00:00 --weekdays 2,3,4, --kerneltz -j ACCEPT      [root@wxC7 ~]# iptables -I OUTPUT 3 -s 192.168.117.133 -p tcp --sport 23 -m iprange --dst-range 192.168.117.130-192.168.117.135 -m time --timestart 12:00:00 --timestop 15:00:00 --weekdays 2,3,4, --kerneltz -j ACCEPT        4、string                         该模块使用某种模式匹配策略匹配给定的字符串                     --algo {bm|kmp}                     [!] --string pattern                     [!] --hex-string pattern                       --from offset                     --to offset                       ~]# iptables -I OUTPUT -m string --algo bm --string "gay" -j REJECT            示例:                   凡是匹配到的字符串 都拒绝                 [root@wxC7 ~]# vim /web/www/index.html 内容how are you                 [root@wxC7 ~]# iptables -I OUTPUT -s 192.168.117.133 -m string --algo kmp --string "how" -j  REJECT   5、connlimit                     Allows  you  to  restrict  the  number  of parallel connections to a server per client IP address (or client address block).                       --connlimit-upto n 小于..                     --connlimit-above n 大于.. 示例:    单链接的最大并发连接控制;只需限制请求即可         [root@wxC7 ~]# iptables -I INPUT -d 192.168.117.133 -s 192.168.0.0/16 -p tcp --dport 3306  -m connlimit  --connlimit-upto 2 -j ACCEPT                6、limit 速率限制                     This  module  matches  at  a limited rate using a token bucket filter.                       采用令牌桶算法                     --limit rate[/second|/minute|/hour|/day]                     --limit-burst number                       限制本机某tcp服务接收新请求的速率:--syn, -m limit    示例:               [root@wxC7 ~]# iptables -I INPUT 3 -d 192.168.117.133 -p icmp --icmp-type 8 -m limit --limit-burst 5 --limit 20/minute -j ACCEPT [root@wxC7 ~]# iptables -I OUTPUT 3 -d 192.168.117.133 -p icmp --icmp-type 0 -j ACCEPT                             7、state                     连接跟踪模块的一部分。允许访问此包的连接跟踪状态。                     [!] --state state                         INVALID, ESTABLISHED, NEW, RELATED or UNTRACKED.                         NEW: 新连接请求;                         ESTABLISHED:已建立的连接;                         INVALID:无法识别的连接;                         RELATED:相关联的连接,当前连接是一个新请求,但附属于某个已存在的连接;                         UNTRACKED:未追踪的连接;                         state扩展:                             内核模块装载:                                 nf_conntrack                                 nf_conntrack_ipv4                              手动装载:                                  nf_conntrack_ftp                     追踪到的连接:                         /proc/net/nf_conntrack                     调整可记录的连接数量最大值:                         /proc/sys/net/nf_conntrack_max                     超时时长:                         /proc/sys/net/netfilter/*timeout*                         示例:设定规则 放行new及ESTABLISGED,默认规则为 拒绝             [root@wxC7 ~]# iptables -I INPUT 3 -d 192.168.117.133 -p tcp -m multiport --dport 21:23,80,139,445,443,3306 -m state --state NEW -j ACCEPT     [root@wxC7 ~]# iptables -I INPUT -d 192.168.117.133 -m state  --state ESTABLISHED -j ACCEPT     [root@wxC7 ~]# iptables -A OUTPUT -s 192.168.117.133 -m state  --state ESTABLISHED -j ACCEPT     [root@wxC7 ~]# iptables -A INPUT -d 192.168.117.133 -j REJECT     [root@wxC7 ~]# iptables -A OUTPUT -s 192.168.117.133 -j REJECT     [root@wxC7 ~]# iptables -R  OUTPUT 2 -s 192.168.117.133 -p udp -m multiport --sports 123,323 -m state --state NEW -j ACCEPT   要放行RELATED装态           [root@wxC7 ~]# iptables -R INPUT 1 -d 192.168.117.133 -m state --state ESTABLISHED,RELATED -j ACCEPT  要追踪RELATED则要手动加载模块 :         modprobe  nf_conntrack_ftp                            处理动作(跳转目标):         -j targetname [per-target-options]             简单target:                 ACCEPT, DROP     扩展target:           REJECT                      这用于响应匹配包发送错误数据包:否则它相当于下降,因此它是终止目标、结束规则遍历。              --reject-with type                     The type given can be icmp-net-unreachable, icmp-host-unreachable, icmp-port-unreachable, icmp-proto-unreach‐ able, icmp-net-prohibited, icmp-host-prohibited, or icmp-admin-prohibited (*), which return  the  appropriate ICMP  error  message (icmp-port-unreachable is the default).                     LOG打开匹配包的内核日志记录                     --log-level                     --log-prefix                     默认日志保存于/var/log/messages 示例:  必须在其访问之前做追踪     [root@wxC7 ~]# iptables -I INPUT 3 -d 192.168.117.133 -p tcp --dport 23 -m state --state NEW -j LOG          也可以加个前缀表示访问telnet服务      [root@wxC7 ~]# iptables -I INPUT 3 -d 192.168.117.133 -p tcp --dport 23 -m state --state NEW -j LOG --log-prefix "access telnet "                                 自定义规则连   示例: 定义ping 的规则           [root@wxC7 ~]# iptables -N in_ping_rules        [root@wxC7 ~]# iptables -A in_ping_rules -d 192.168.117.133 -p icmp --icmp-type 8 -j ACCEPT 拒绝指定ip访问     [root@wxC7 ~]# iptables -I in_ping_rules -d 192.168.117.133 -s 192.168.117.131 -p icmp -j REJECT  规则链调用        [root@wxC7 ~]# iptables -I INPUT 5 -d 192.168.117.133 -p icmp -j in_ping_rules    注意自定义链 一旦被引用 删不掉的     要删 清空其规则链  保存和载入规则:         iptables规则定义完后都在内存中         保存:iptables-save > /PATH/TO/SOME_RULE_FILE         重载:iptabls-restore < /PATH/FROM/SOME_RULE_FILE             -n, --noflush:不清除原有规则 追加进去        示例:       [root@wxC7 ~]# iptables-save > /etc/sysconfig/iptables-20170613-01       [root@wxC7 ~]# iptables-restore < /etc/sysconfig/iptables-20170613-01         CentOS 6:             保存规则:                 service iptables save                 保存规则于/etc/sysconfig/iptables文件,覆盖保存;             重载规则:                 service iptables restart :重载覆盖                 默认重载/etc/sysconfig/iptables文件中的规则             配置文件:/etc/sysconfig/iptables-config           规则优化的思路:         使用自定义链管理特定应用的相关规则,模块化管理规则;         (1) 优先放行双方向状态为ESTABLISHED的报文;         (2) 服务于不同类别的功能的规则,匹配到报文可能性更大的放前面;         (3) 服务于同一类别的功能的规则,匹配条件较严格的放在前面;         (4) 设置默认策略:白名单机制             (a) iptables -P,不建议;             (b) 建议在规则的最后定义规则做为默认策略;            iptables/netfilter网络防火墙         (1) 网关;主机要打kail核心转发功能         echo 1 >   /proc/sys/net/iPv4/ip_forward         (2) filter表的FORWARD链;添加规则 模拟测试首先搭建一个网络    此网络联通后做访问控制           对于对于外网80端口访问控制  (1)   [root@wxC6 ~]# iptables -A FORWARD -j REJECT         [root@wxC6 ~]# iptables -I FORWARD -s 192.168.174.0/24 -p tcp --dport 80 -j ACCEPT         [root@wxC6 ~]# iptables -I FORWARD 2 -d 192.168.10.0/24 -p tcp --sport 80 -j ACCEPT  (2) 基于state状态控制         [root@wxC6 ~]# iptables -A FORWARD -j REJECT         [root@wxC6 ~]# iptables -I FORWARD -m state --state ESTABLISHED -j ACCEPT         [root@wxC6 ~]# iptables -I FORWARD 2 -s 192.168.174.0/24 -m state --state NEW -j ACCEPT          [root@wxC6 ~]# iptables -I FORWARD 3 -d 192.168.174.0/24 -p tcp --dport 80 -m state --state NEW -J ACCEPT (3) 多端口放行控制         [root@wxC6 ~]# iptables -I FORWARD 4 -d 192.168.174.129 -p tcp -m multiport --dports 21:23,80,139,443,445 -m state --state NEW -j ACCEPT         [root@wxC6 ~]# iptables -I FORWARD 5 -d 192.168.174.129 -p udp --dport 137:138 -m state --state NEW -j ACCEPT (4) 放行外网RELATED状态访问      [root@wxC6 ~]# iptables -I FORWARD 6 -d 192.168.174.129 -p tcp -m state  --state RELATED -j ACCEP           要注意的问题:             (1) 请求-响应报文均会经由FORWARD链,要注意规则的方向性;             (2) 如果要启用conntrack机制,建议将双方向的状态为ESTABLISHED的报文直接放行;    NAT: Network Address Translation             网络地址转换:隐藏地址(把请求报文的源地址转换为网关地址)             请求报文:由管理员定义;             响应报文:由NAT的conntrack机制自动实现;             请求报文:                 改源地址:SNAT,MASQUERADE                 改目标地址:DNAT         iptables/netfilter:             NAT定义在nat表;                 PREROUTING,INPUT,OUTPUT,POSTROUTING                 SNAT:POSTROUTING                 DNAT:PREROUTING                 PAT:       target:             SNAT:                 This  target  is only valid in the nat table, in the POSTROUTING and INPUT chains, and user-defined chains which are only called from those chains.                   --to-source [ipaddr[-ipaddr]] 示例:             转换地址为网关地址           [root@wxC6 ~]# iptables -t nat -A POSTROUTING -s 192.168.174.0/24 -j SNAT --to-source 172.16.251.106                                                            MASQUERADE              这个目标只适用于nat表,在POSTROUTING链。它应该只被用于动态分配的IP(拨号)连接:如果你有一个静态IP地址,你应该使用SNAT目标             用于SNAT场景中应用于POSTROUTING链上的规则实现源地址转换,但外网地址不固定时,使用此target;  DNAT:              这个目标只适用于nat表,在PREROUTING和OUTPUT链,和用户定义的调用这些链的链。                 --to-destination [ipaddr[-ipaddr]][:port[-port]] 转到目标xx    示例:                    [root@wxC6 ~]# iptables -t nat -A PREROUTING -d 172.16.251.106 -p tcp --dport 80 -j DNAT --to-destination 192.168.174.136           [root@wxC6 ~]# iptables -t nat -I PREROUTING -d 172.16.251.106 -p tcp --dport 80 -j DNAT --to-destination 192.168.174.136:8080    REDIRECT                  端口映射(重定向)                  这个目标只适用于nat表,在PREROUTING和OUTPUT链,和用户定义的调用这些链的链。                 --to-ports port[-port]      示例:            [root@wxC6 ~]# iptables -A PREROUTING -t nat -d 192.168.174.136 -p tcp --dport 80 -j      REDIRECT --to-ports 8080    


【本文地址】


今日新闻


推荐新闻


    CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3